Hive সমর্থন করে বিভিন্ন complex data types, যা ডেটাবেসের মধ্যে স্ট্রাকচারড ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে সহায়তা করে। এই কমপ্লেক্স ডেটা টাইপগুলি HiveQL-এ সহজে ব্যবহার করা যায় এবং এটি ডেটার স্টোরেজ ও বিশ্লেষণে আরও নমনীয়তা প্রদান করে। ARRAY, MAP, এবং STRUCT হল তিনটি প্রধান কমপ্লেক্স ডেটা টাইপ, যা Hive-এ ডেটা সংরক্ষণ এবং প্রসেসিং করতে ব্যবহৃত হয়।
১. ARRAY
ARRAY একটি সিকোয়েন্সিয়াল (ordered) ডেটার সংগ্রহ, যেখানে প্রতিটি উপাদান এক ধরনের ডেটা হয়ে থাকে। এটি একটি নির্দিষ্ট টাইপের একাধিক মান (values) রাখতে সক্ষম।
ARRAY এর সিনট্যাক্স:
ARRAY<element_type>
এখানে element_type হলো উপাদানের ডেটা টাইপ, যেমন INT, STRING, FLOAT ইত্যাদি।
ARRAY তৈরি এবং ব্যবহার:
CREATE TABLE employee (
id INT,
name STRING,
skills ARRAY<STRING>
);
এটি employee টেবিল তৈরি করবে, যেখানে skills একটি ARRAY টাইপ কলাম, যা একজন কর্মচারীর বিভিন্ন স্কিল স্টোর করতে পারে।
ARRAY-এ ডেটা ইনসার্ট:
INSERT INTO employee
VALUES (1, 'John Doe', ARRAY('Java', 'Hive', 'SQL'));
এটি John Doe কর্মচারীর জন্য skills কলামে তিনটি স্কিল ইনসার্ট করবে (Java, Hive, SQL)।
ARRAY থেকে ডেটা রিট্রিভ করা:
SELECT name, skills[0] FROM employee;
এটি employee টেবিল থেকে কর্মচারীর নাম এবং প্রথম স্কিল (skills[0]) নির্বাচন করবে।
২. MAP
MAP হল একটি key-value পেয়ার সংগ্রহ, যেখানে প্রতিটি key এবং তার সংশ্লিষ্ট value এক ধরনের ডেটা হয়ে থাকে। MAP ব্যবহার করে আপনি বিভিন্ন ধরনের মানগুলো একটি একক কলামে সংরক্ষণ করতে পারেন।
MAP এর সিনট্যাক্স:
MAP<key_type, value_type>
এখানে key_type এবং value_type হল key এবং value এর ডেটা টাইপ, যেমন STRING, INT, FLOAT, ইত্যাদি।
MAP তৈরি এবং ব্যবহার:
CREATE TABLE employee (
id INT,
name STRING,
contact_info MAP<STRING, STRING>
);
এটি employee টেবিল তৈরি করবে, যেখানে contact_info একটি MAP<STRING, STRING> টাইপ কলাম, যা একাধিক কন্টাক্ট তথ্য (যেমন, ফোন নম্বর, ইমেইল অ্যাড্রেস) ধারণ করতে পারে।
MAP-এ ডেটা ইনসার্ট:
INSERT INTO employee
VALUES (1, 'John Doe', MAP('Phone', '123-456-7890', 'Email', 'john.doe@example.com'));
এটি contact_info MAP এ Phone এবং Email এর মান সন্নিবেশ করবে।
MAP থেকে ডেটা রিট্রিভ করা:
SELECT name, contact_info['Phone'] FROM employee;
এটি employee টেবিল থেকে name এবং Phone কন্টাক্ট ইনফরমেশন নির্বাচন করবে।
৩. STRUCT
STRUCT একটি কাস্টম ডেটা টাইপ, যা একাধিক ডেটা টাইপের মান ধারণ করতে পারে। এটি এক ধরনের রেকর্ড টাইপ, যেখানে একাধিক ফিল্ড থাকে, প্রতিটি ফিল্ডের ডেটা টাইপ আলাদা হতে পারে।
STRUCT এর সিনট্যাক্স:
STRUCT<field1_type, field2_type, ...>
এখানে প্রতিটি field_type হল স্ট্রাকচারের বিভিন্ন ফিল্ডের ডেটা টাইপ, যেমন STRING, INT, FLOAT, ইত্যাদি।
STRUCT তৈরি এবং ব্যবহার:
CREATE TABLE employee (
id INT,
name STRING,
address STRUCT<street:STRING, city:STRING, zip:INT>
);
এটি employee টেবিল তৈরি করবে, যেখানে address একটি STRUCT টাইপ কলাম, যা কর্মচারীর ঠিকানা সংরক্ষণ করবে (যেমন street, city, zip code)।
STRUCT-এ ডেটা ইনসার্ট:
INSERT INTO employee
VALUES (1, 'John Doe', STRUCT('123 Main St', 'New York', 10001));
এটি address STRUCT এ street, city, এবং zip কোড ইনসার্ট করবে।
STRUCT থেকে ডেটা রিট্রিভ করা:
SELECT name, address.city FROM employee;
এটি employee টেবিল থেকে কর্মচারীর নাম এবং শহরের তথ্য (address.city) নির্বাচন করবে।
Complex Data Types ব্যবহার করতে কিছু টিপস
- ARRAY: ব্যবহারকারীরা ARRAY ব্যবহার করে একাধিক মান সন্নিবেশ করতে পারেন, যেমন একাধিক ফোন নম্বর বা স্কিল। এটি একটি নির্দিষ্ট অর্ডারে ডেটা সংরক্ষণ করে, যার ফলে আপনি ইনডেক্সের মাধ্যমে ডেটা অ্যাক্সেস করতে পারবেন।
- MAP: MAP টেবিল কলামে কীগুলোর মধ্যে সম্পর্ক (key-value pairs) ধারণ করতে ব্যবহার করা হয়। এটি এমন পরিস্থিতিতে উপকারী যখন আপনি একটি ডেটা সেটে একাধিক মানের জন্য কীগুলোর মধ্যে সম্পর্ক রাখতে চান।
- STRUCT: STRUCT সঠিকভাবে স্ট্রাকচারড ডেটার জন্য ব্যবহার করা হয়, যখন বিভিন্ন ধরনের ডেটা (যেমন নাম, বয়স, ঠিকানা) একটি একক রেকর্ডে রাখা প্রয়োজন।
উপসংহার
Hive-এর ARRAY, MAP, এবং STRUCT ডেটা টাইপগুলি ডেটাবেসের মধ্যে কমপ্লেক্স এবং স্ট্রাকচারড ডেটা পরিচালনা করতে সহায়তা করে। এই কমপ্লেক্স ডেটা টাইপগুলি ব্যবহারকারীদের জন্য ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ সহজ করে তোলে। ARRAY একাধিক মান, MAP কীগুলোর মাধ্যমে সম্পর্কিত মান, এবং STRUCT একাধিক ফিল্ডের সমন্বয়ে ডেটা ধারণ করতে সাহায্য করে, যা ডেটাবেস ডিজাইন এবং কুয়েরি অপটিমাইজেশনের জন্য উপকারী।
Read more